package com.hundsun.cprs.yyt.service.account.service;

import java.util.List;

import com.hundsun.cprs.yyt.service.account.domain.Account;
import com.hundsun.cprs.yyt.service.account.domain.query.AccountQuery;
import com.hundsun.cprs.yyt.service.quota.domain.Quota;

/**
 * 交易账户管理
 * @author linrl
 * @date 2019年2月19日
 */
public interface AccountService {
    
    /**
     * 分页查询
     * @param query
     */
    void selectByPage(AccountQuery query);
    
    /**
     * 按指定条件统计剩余配额总量
     * @return
     */
    Long sumRemainingQuotaByQuery(AccountQuery query);
    
    /**
     * 列表查询
     * @param query
     * @return
     */
    List<Account> selectByList(AccountQuery query);
    
    /**
     * 根据会员ID获取交易账号
     * @param userId
     * @return
     */
    Account getAccountByUserId(Long userId);
    
    /**
     * 创建账号
     * @param account
     * @return
     */
    Account createAccount(Account account);
    
    /**
     * 修改账号
     * @param account
     * @return
     */
    Account modifyAccount(Account account);
    
    /**
     * 扣除配额
     * @param userId
     * @param amount
     */
    void deductQuota(Long userId,Long amount,String type,String memo);
    
    /**
     * 增加配额
     * @param userId
     * @param amount
     * @param memo
     */
    void addQuota(Long userId,Long amount,String memo);

    /**
     * 配额转积分
     * @param userId
     * @param exchangeAmount
     *
     * */
    void exchangePoints(Long userId,Long exchangeAmount,Quota quota);

    /**
     * 根据交易账号查找账户信息
     * @param fundAccount
     * */
    Account getAccountByFundAccountFromCache(String fundAccount);
}
